package com.qdu.util;

import com.oreilly.servlet.multipart.FileRenamePolicy;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * 自定义上传文件的命名策略：针对一次上传多个文件
 *
 * @author Anna
 */
public class CustomFileRenamePolicy2 implements FileRenamePolicy {

    //为了获得上传的多个文件重命名后的名字，这里定义了一个字符串列表，存储文件重命名的名字
    private List<String> fileNames=new ArrayList<>();
    
    //如果上传了n个文件，则rename()会调用n次
    @Override
    public File rename(File file) {
        String fileName = file.getName();
        String extensionName = fileName.substring(fileName.lastIndexOf("."));
        String newName = UUID.randomUUID().toString().replace("-", "") + extensionName;
        //这里每次将新名字添加到列表中
        fileNames.add(newName);
        File newFile = new File(file.getParent(), newName);
        return newFile;
    }

    public static void main(String[] args) {
        File file = new File("D:/photo/pic1.jpg");
        CustomFileRenamePolicy2 policy = new CustomFileRenamePolicy2();
        File newFile = policy.rename(file);
        System.out.println(newFile.getName());
    }
    
    //这里添加了一个getter，用于获取上传的多个文件重命名的后的名字列表
    public List<String> getFileNames() {
        return fileNames;
    }
}
